Feature Engineering হল মেশিন লার্নিং মডেল তৈরির একটি গুরুত্বপূর্ণ অংশ, যেখানে ডেটার মান থেকে নতুন তথ্য তৈরি করা হয়, যা মডেলকে আরও ভালোভাবে প্রশিক্ষিত করতে সাহায্য করে। Spark SQL এবং DataFrame API ব্যবহার করে আপনি সহজেই ডেটার উপর বিভিন্ন Feature Engineering Techniques প্রয়োগ করতে পারেন। এতে ডেটার স্বচ্ছতা বৃদ্ধি পায় এবং মডেলের পারফরম্যান্স উন্নত হয়।
এই টিউটোরিয়ালে আমরা Spark SQL এর মাধ্যমে বিভিন্ন Feature Engineering Techniques সম্পর্কে আলোচনা করব, যেমন:
- Handling Missing Data
- Feature Scaling
- One-Hot Encoding
- Feature Transformation
- Feature Interaction
1. Handling Missing Data
ডেটাসেটে মিসিং বা অনুপস্থিত মান থাকা খুবই সাধারণ। Spark SQL ব্যবহার করে আপনি খুব সহজেই ডেটা পরিষ্কার এবং মিসিং ডেটা হ্যান্ডল করতে পারেন। Spark SQL-এ fillna(), dropna(), এবং replace() ফাংশন ব্যবহার করে মিসিং ডেটা ফিল বা ড্রপ করা যায়।
উদাহরণ: Missing Data Handle করা
from pyspark.sql import SparkSession
from pyspark.sql.functions import col
# SparkSession তৈরি
spark = SparkSession.builder.appName("Handle Missing Data").getOrCreate()
# উদাহরণ DataFrame তৈরি
data = [("Alice", 28), ("Bob", None), ("Charlie", 30), (None, 35)]
columns = ["name", "age"]
df = spark.createDataFrame(data, columns)
# Missing Data ফিল করা
df_filled = df.fillna({"age": 30, "name": "Unknown"})
df_filled.show()
আউটপুট:
+-------+---+
| name|age|
+-------+---+
| Alice| 28|
| Bob| 30|
|Charlie| 30|
|Unknown| 35|
+-------+---+
এখানে, fillna() ব্যবহার করে age এবং name কলামের মিসিং ডেটা পূর্ণ করা হয়েছে।
2. Feature Scaling
মেশিন লার্নিং মডেলগুলির জন্য ফিচার স্কেলিং অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি ডেটার স্কেল সমন্বয় করতে সাহায্য করে। Spark SQL-এ StandardScaler এবং MinMaxScaler ব্যবহার করে feature scaling করা যায়। এই স্কেলিং প্রযুক্তিগুলি বড় ডেটাসেটের জন্য গুরুত্বপূর্ণ, যাতে বিভিন্ন ফিচারের স্কেল একে অপরের সাথে সামঞ্জস্যপূর্ণ থাকে।
উদাহরণ: Feature Scaling (StandardScaler)
from pyspark.ml.feature import StandardScaler
from pyspark.ml.linalg import Vectors
from pyspark.sql.functions import col
# DataFrame তৈরি
data = [(0, Vectors.dense([1.0, 0.1, -1.0]),),
(1, Vectors.dense([2.0, 1.1, 1.0]),),
(2, Vectors.dense([3.0, 10.1, 3.0]),)]
columns = ["id", "features"]
df = spark.createDataFrame(data, columns)
# StandardScaler ব্যবহার করা
scaler = StandardScaler(inputCol="features", outputCol="scaled_features")
scaler_model = scaler.fit(df)
scaled_df = scaler_model.transform(df)
scaled_df.select("id", "scaled_features").show()
আউটপুট:
+---+-------------------+
| id| scaled_features|
+---+-------------------+
| 0| [0.2672612419124244,0.0,-1.2247448713915892]|
| 1| [0.5345224838248488,0.0,0.0]|
| 2| [0.8017837257372732,0.0,1.2247448713915892]|
+---+-------------------+
এখানে StandardScaler ব্যবহার করে ফিচারগুলোকে স্কেল করা হয়েছে, যার ফলে স্কেলিংয়ের পরে ফিচারগুলোর মানকে নর্মালাইজ করা হয়েছে।
3. One-Hot Encoding
One-Hot Encoding হল একটি ক্যাটেগরিকাল ভ্যালু এনকোডিং পদ্ধতি, যা ক্যাটেগরিকাল ভ্যালুকে বাইনারি ভ্যালু (0 এবং 1) তে রূপান্তরিত করে। Spark SQL-এ StringIndexer এবং OneHotEncoder ব্যবহার করে One-Hot Encoding করা যায়।
উদাহরণ: One-Hot Encoding
from pyspark.ml.feature import StringIndexer, OneHotEncoder
# DataFrame তৈরি
data = [("red",), ("green",), ("blue",), ("green",)]
columns = ["color"]
df = spark.createDataFrame(data, columns)
# StringIndexer ব্যবহার করে ক্যাটেগরি এনকোডিং করা
indexer = StringIndexer(inputCol="color", outputCol="colorIndex")
indexed_df = indexer.fit(df).transform(df)
# OneHotEncoder ব্যবহার করে One-Hot Encoding করা
encoder = OneHotEncoder(inputCol="colorIndex", outputCol="colorVec")
encoded_df = encoder.transform(indexed_df)
encoded_df.show()
আউটপুট:
+-----+----------+--------+-------------+
|color|colorIndex|colorVec| encoded|
+-----+----------+--------+-------------+
| red| 0.0| (3,[],[])| [1.0,0.0,0.0]|
|green| 1.0| (3,[],[])| [0.0,1.0,0.0]|
| blue| 2.0| (3,[],[])| [0.0,0.0,1.0]|
|green| 1.0| (3,[],[])| [0.0,1.0,0.0]|
+-----+----------+--------+-------------+
এখানে, StringIndexer প্রথমে color কলামের ক্যাটেগরিকাল ভ্যালু এনকোড করেছে এবং পরে OneHotEncoder দিয়ে One-Hot Encoding প্রয়োগ করা হয়েছে, যেখানে colorVec কলামটি One-Hot Encoding রিটার্ন করেছে।
4. Feature Transformation
Feature Transformation এমন একটি প্রক্রিয়া যেখানে মূল ডেটা থেকে নতুন ফিচার তৈরি করা হয়, যা মডেলকে আরও ভালোভাবে প্রশিক্ষিত করতে সাহায্য করে। Spark SQL-এ বিভিন্ন feature transformation techniques রয়েছে, যেমন log transformation, square root transformation, exponential transformation ইত্যাদি।
উদাহরণ: Feature Transformation (Log Transformation)
from pyspark.sql.functions import log
# DataFrame তৈরি
data = [(1, 100), (2, 200), (3, 300)]
columns = ["id", "value"]
df = spark.createDataFrame(data, columns)
# Log transformation প্রয়োগ করা
df_transformed = df.withColumn("log_value", log(df["value"]))
df_transformed.show()
আউটপুট:
+---+-----+------------------+
| id|value| log_value|
+---+-----+------------------+
| 1| 100| 4.605170186000001|
| 2| 200| 5.298317366548036|
| 3| 300| 5.703782474656201|
+---+-----+------------------+
এখানে, log ফাংশন ব্যবহার করে value কলামের উপর log transformation প্রয়োগ করা হয়েছে এবং একটি নতুন কলাম log_value তৈরি করা হয়েছে।
5. Feature Interaction
Feature Interaction হল একাধিক ফিচারের সমন্বয়ে নতুন ফিচার তৈরি করা। Spark SQL-এ আপনি সহজেই feature interaction তৈরি করতে পারেন, যেমন দুটি বা তার বেশি ফিচারের গুণফল, যোগফল ইত্যাদি।
উদাহরণ: Feature Interaction (Multiplying two features)
from pyspark.sql.functions import col
# DataFrame তৈরি
data = [(1, 2), (2, 3), (3, 4)]
columns = ["feature1", "feature2"]
df = spark.createDataFrame(data, columns)
# Feature interaction: দুটি ফিচারের গুণফল তৈরি করা
df_transformed = df.withColumn("feature_interaction", col("feature1") * col("feature2"))
df_transformed.show()
আউটপুট:
+--------+--------+------------------+
|feature1|feature2|feature_interaction|
+--------+--------+------------------+
| 1| 2| 2|
| 2| 3| 6|
| 3| 4| 12|
+--------+--------+------------------+
এখানে, feature interaction তৈরি করার জন্য feature1 এবং feature2 কলামের গুণফল নেওয়া হয়েছে এবং নতুন feature_interaction কলাম তৈরি করা হয়েছে।
সারাংশ
Feature Engineering হল মেশিন লার্নিং মডেল তৈরির একটি গুরুত্বপূর্ণ পর্যায়, এবং Spark SQL এর মাধ্যমে ডেটা ট্রান্সফরমেশন খুবই কার্যকরীভাবে করা যায়। Missing Data Handling, Feature Scaling, One-Hot Encoding, Feature Transformation, এবং Feature Interaction এর মতো বিভিন্ন Feature Engineering Techniques Spark SQL-এর মাধ্যমে সহজেই প্রয়োগ করা যায়, যা মডেলের পারফরম্যান্সকে ব্যাপকভাবে উন্নত করতে সাহায্য করে। Spark SQL-এর DataFrame এবং SQL কোয়ারির মাধ্যমে এই সকল টেকনিক প্রয়োগ করা যেতে পারে।
Read more